'use strict'

module.exports = async (c, next) => {
    //消息头和querystring查询字符串里的都能识别出来，保证兼容
    let token = c.headers.authorization || c.query.token

    if (!token) {
        return c.status(403).send('TOKEN NULL')
    }
    //c.service默认是静态的，静态录入，执行后就一直存在，不用重新创建
    let r = c.service.tok.verify(token)

    //判断是否成功解密token，如果能解密出来一定是JSON格式，存放在data里
    if (!r.ok) {
        return c.status(403).send(r.errcode)
    }

    //把成功验证后解密的用户数据放在c.box,每次box都是空的空对象，是动态的
    c.box.user = r.data

    await next();
}